package chain

import (
	"fmt"
	"strings"
)

type Handler1 struct {
	HandlerChain
}

func (h *Handler1) Do(context string) {
	if strings.Contains(context, "1") {
		fmt.Println("handler1", context)
		return
	}

	if h.Next != nil {
		h.Next.Do(context)
	}
}

type Handler2 struct {
	HandlerChain
}

func (h *Handler2) Do(context string) {
	if strings.Contains(context, "2") {
		fmt.Println("handler2", context)
		return
	}

	if h.Next != nil {
		h.Next.Do(context)
	}
}

type Handler3 struct {
	HandlerChain
}

func (h *Handler3) Do(context string) {
	if strings.Contains(context, "3") {
		fmt.Println("handler3", context)
		return
	}

	if h.Next != nil {
		h.Next.Do(context)
	}
}
